package prh25.biblioteca.testes.aceitacao;

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.PropertyUtils;

import prh25.biblioteca.entity.Aluno;
import prh25.biblioteca.entity.Coordenador;
import prh25.biblioteca.entity.Endereco;
import prh25.biblioteca.entity.Professor;
import prh25.biblioteca.entity.Revisor;
import prh25.biblioteca.service.AlunoService;
import prh25.biblioteca.service.AlunoServiceImpl;
import prh25.biblioteca.service.CoordenadorService;
import prh25.biblioteca.service.CoordenadorServiceImpl;
import prh25.biblioteca.service.ProfessorService;
import prh25.biblioteca.service.ProfessorServiceImpl;
import prh25.biblioteca.service.RevisorService;
import prh25.biblioteca.service.RevisorServiceImpl;


public class GerenciadorTestes {
/*
	private AlunoService alunoService;
	private CoordenadorService coordenadorService;
	private ProfessorService professorService;
	private RevisorService revisorService;
	
	public GerenciadorTestes() {
		alunoService = new AlunoServiceImpl();
		coordenadorService = new CoordenadorServiceImpl();
		professorService = new ProfessorServiceImpl();
		revisorService = new RevisorServiceImpl();
	}

	public Integer criarAluno(String nome, String matricula,
		String email, String curso, String login, String senha,Endereco endereco) 
	{
		


		Aluno aluno = new Aluno();
		
		aluno.setNome(nome);
		aluno.setMatricula(matricula);
		aluno.setEmail(email);
		aluno.setCurso(curso);
		aluno.setLogin(login);
		aluno.setSenha(senha);
		aluno.setEndereco(endereco);
		

		/**Endereco endereco = new Endereco();
		endereco.setPais(pais);
		endereco.setBairro(bairro);
		endereco.setCidade(cidade);
		endereco.setComplemento(complemento);
		endereco.setEstado(estado);
		endereco.setRua(rua);
		endereco.setTelResidencial(telResidencial);
		endereco.setTelCelular(telCelular);
		
		
		
		return alunoService.criar(aluno);
	}
	
	public String getAtributoAluno(int idAluno,String atributo) {
		Aluno aluno = alunoService.recuperarPorId(idAluno);
		try {
			return String.valueOf(PropertyUtils.getProperty(aluno, atributo));
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			try {
				return String.valueOf(PropertyUtils.getProperty(aluno.getEndereco(),
						atributo));
			} catch (IllegalAccessException e1) {
				e1.printStackTrace();
			} catch (InvocationTargetException e1) {
				e1.printStackTrace();
			} catch (NoSuchMethodException e1) {
				e1.printStackTrace();
			}
		}
		return null;
	}
	
	/*private Endereco criarEndereco(String pais, String estado,
			String cidade, String bairro, String rua, String complemento,
			String telResidencial, String telCelular) {
				
		CriaEndereco criaEndereco = new CriaEndereco(pais,estado,cidade,
			bairro, rua, complemento, telResidencial, telCelular);
		return criaEndereco.getEndereco();
	}
	*/
	
	/*
	public Integer criarAluno(String nome, String matricula,
		String email, String curso, String login, String senha,String pais, 
		String estado,	String cidade, String bairro, String rua, 
		String complemento,	String telResidencial, String telCelular) 
	{
		
		Aluno aluno = new Aluno();
		
		aluno.setNome(nome);
		aluno.setMatricula(matricula);
		aluno.setEmail(email);
		aluno.setCurso(curso);
		aluno.setLogin(login);
		aluno.setSenha(senha);
		
		Endereco endereco = criarEndereco(pais, estado, cidade, bairro, 
			rua, complemento, telResidencial, telCelular);
		
		aluno.setEndereco(endereco);
		
		return alunoService.criar(aluno);
	}
	
	public Integer criarCoordenador(String nome, String email, String login,
			String senha, String pais, String estado,String cidade, String bairro, 
			String rua,String complemento,	String telResidencial, String telCelular) 
	{
		Coordenador coordenador = new Coordenador();
		
		coordenador.setNome(nome);
		coordenador.setEmail(email);
		coordenador.setLogin(login);
		coordenador.setSenha(senha);
		
		Endereco endereco = criarEndereco(pais, estado, cidade, bairro, 
			rua, complemento, telResidencial, telCelular);
		
		coordenador.setEndereco(endereco);
		return coordenadorService.criar(coordenador);
	}
	
	
	public String getAtributoCoordenador(int idCoordenador,String atributo) {
		Coordenador coordenador = coordenadorService.recuperarPorId(idCoordenador);
		try {
			return String.valueOf(PropertyUtils.getProperty(coordenador, atributo));
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			try {
				return String.valueOf(PropertyUtils.getProperty(coordenador.getEndereco(),
						atributo));
			} catch (IllegalAccessException e1) {
				e1.printStackTrace();
			} catch (InvocationTargetException e1) {
				e1.printStackTrace();
			} catch (NoSuchMethodException e1) {
				e1.printStackTrace();
			}
		}
		return null;
	}
	
	public Integer criarProfessor(String nome, String curso, String email,
		String login,String senha, String pais, String estado,String cidade, 
		String bairro,String rua,String complemento,String telResidencial, 
		String telCelular) 
	{
		
		Professor professor = new Professor();
		
		professor.setNome(nome);
		professor.setCurso(curso);
		professor.setEmail(email);
		professor.setLogin(login);
		professor.setSenha(senha);
		
		Endereco endereco = criarEndereco(pais, estado, cidade, bairro, rua, 
			complemento, telResidencial, telCelular);
		
		professor.setEndereco(endereco);
		return professorService.criar(professor);
	}
	
	public String getAtributoProfessor(int idProfessor,String atributo) {
		Professor professor = professorService.recuperarPorId(idProfessor);
		try {
			return String.valueOf(PropertyUtils.getProperty(professor, atributo));
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			try {
				return String.valueOf(PropertyUtils.getProperty(professor.getEndereco(),
						atributo));
			} catch (IllegalAccessException e1) {
				e1.printStackTrace();
			} catch (InvocationTargetException e1) {
				e1.printStackTrace();
			} catch (NoSuchMethodException e1) {
				e1.printStackTrace();
			}
		}
		return null;
	}
	
	public Integer criarRevisor(String nome, String email,
			String login,String senha, String pais, String estado,String cidade, 
			String bairro,String rua,String complemento,String telResidencial, 
			String telCelular) 
	{
		Revisor revisor = new Revisor();
		revisor.setNome(nome);
		revisor.setEmail(email);
		revisor.setLogin(login);
		revisor.setSenha(senha);
		
		Endereco endereco = criarEndereco(pais, estado, cidade, bairro, rua, 
				complemento, telResidencial, telCelular);
		
		revisor.setEndereco(endereco);
		return revisorService.criar(revisor);
	}
	
	public String getAtributoRevisor(int idRevisor,String atributo) {
		Revisor revisor = revisorService.recuperarPorId(idRevisor);
		try {
			return String.valueOf(PropertyUtils.getProperty(revisor, atributo));
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			try {
				return String.valueOf(PropertyUtils.getProperty(revisor.getEndereco(),
						atributo));
			} catch (IllegalAccessException e1) {
				e1.printStackTrace();
			} catch (InvocationTargetException e1) {
				e1.printStackTrace();
			} catch (NoSuchMethodException e1) {
				e1.printStackTrace();
			}
		}
		return null;
	}
	
	*/
	
	/*
	public static void main(String[] args) {
		GerenciadorTestes ger = new GerenciadorTestes();
		/**
		int idCoordenador = ger.criarCoordenador("R","rpa@gmail.com","login","senha","B","PB","Sousa",
			"AC","RA","03","8","9");
		int idAluno = ger.criarAluno("R","m_1","rpaufcg@gmail.com","cc",
			"login_m1","senha","B","PB","Sousa","AC","RA","03", "","9");
		
		int idRevisor = ger.criarRevisor("RR","rpaufcg@gmail.com","login_7","senha", 
			"B","PB","Sousa","AC","PCM","03","8","9");
		System.out.println(ger.getAtributoAluno(idRevisor, "nome"));
		//System.out.println(ger.getAtributoCoordenador(idCoordenador, "nome"));
	}
*/


	
}
